#pragma once
#include <list>
#include <iostream>
#include <mutex>
#include <DataStream.hpp>
using namespace std;
class Message {
public:
	enum UnitType {
		tts,audio,animation,all,iat,aiui
	};
	UnitType from;
	UnitType to;
	shared_ptr<DataStream> ds;
	Message(UnitType m_from, UnitType m_to, shared_ptr<DataStream> m_ds) :from(m_from), to(m_to), ds(m_ds) {}
};
class MessageQueue {
public:
	list<Message> messages;
	void PushMessage(Message msg);
public:
	mutex mutex_msg;
};
extern MessageQueue msgs;